#ifndef __IUSEFULFUNCTIONS_H__
#define __IUSEFULFUNCTIONS_H__

#include "CTypes.h"

class IUsefulFunctions
{
public:
	IUsefulFunctions()				{}
	virtual ~IUsefulFunctions()		{}

	virtual stringc ConvertFromNumber(s32 Number)	= 0;
	virtual stringc ToUpper(stringc str)					= 0;
/*
	template <typename T>
	bool DeleteNode(std::list<T*> &list,T *Node)
	{
		std::_List_iterator<T*> a = list.begin();
		bool Exit = false;

		while (!Exit && list.size() > 0)
		{
			T *ActualNode = *(a);
			if (Node == ActualNode)
			{
				delete ActualNode;
				list.erase(a);
				return true;
			}
			a++;
			Exit = (a == list.end());
		}
		return false;
	}
*/
/*
	template <typename T>
	void DeleteListNodes(std::list<T*> &list)
	{
		while (list.size() > 0)
		{
			DeleteNode(list,*(list.begin()));
		}
	}

	template <typename T>
	bool DeleteNode(std::vector<T*> &list,T *Node)
	{
		u32 Pointer = 0;
		bool Exit = false;

		while (!Exit && list.size() > 0)
		{
			T *ActualNode = *(list.begin() + Pointer);
			if (Node == ActualNode)
			{
				delete ActualNode;
				list.erase(list.begin() + Pointer);
				return true;
			}
			Pointer++;
			Exit = (list.begin() + Pointer == list.end());
		}
		return false;
	}

	template <typename T>
	void DeleteListNodes(std::vector<T*> &list)
	{
		while (list.size() > 0)
		{
			DeleteNode(list,*(list.begin()));
		}
	}
*/
};

POWERLIBRARYENGINE_API IUsefulFunctions *GetUsefulFunctions();
POWERLIBRARYENGINE_API void DeleteUsefulFunctions();
void SetUsefulFunctions(IUsefulFunctions *nuf);
#define UsefulFunctions	GetUsefulFunctions()

#endif
